package com.nys.conci.base.utilitario.logger;

import com.nys.conci.base.servicio.ServicioLogger;
import com.nys.conci.base.utilitario.EJBUtils;

/**
 * Clase utilitaria encargada de registro de bitacoras(Logging) dentro del sistema.
 * Contiene los distintos loggers utilizados y su respectiva metodos para el registro
 * adecuado de las acciones segun lo requiera.
 * 
 * <br><i>Es importante indicar que la configuración de los loggers utilizados, se
 * encuentra dentro del archivo log4.properties, ubicado en la raiz del codigo java.</i>
 * 
 * @author Adam M. Gamboa González
 * @since
 */
public class LoggerUtil {
    
    /**
     * 
     */
    
    /**
     * Este metodo se encarga de registrar un log de nivel INFORMACION. Toma el mensaje,
     * a registrar de la excepcion. Si se le indica por medio del parametro <i>loggingDB</i>,
     * registra el mensaje en base de datos. 
     * 
     * @param ex Excepcion a registrar en el log.
     * @param loggingDB Indica si desea o no registrar el log en base de datos.
     */
    public static void registrarLogInfo(Exception ex, boolean loggingDB) {
        ServicioLogger sl = EJBUtils.obtenerEJB(ServicioLogger.class);
        if(sl != null){
            sl.registrarLogInfo(ex, loggingDB);
        }
    }
    
    /**
     * Este metodo se encarga de registrar un log de nivel INFORMACION. Toma el mensaje,
     * a registrar de la excepcion. Si se le indica por medio del parametro <i>loggingDB</i>,
     * registra el mensaje en base de datos. 
     * 
     * @param mensaje Mensaje a registrar en el log.
     * @param loggingDB Indica si desea o no registrar el log en base de datos.
     */
    public static void registrarLogInfo(String mensaje, boolean loggingDB) {
        ServicioLogger sl = EJBUtils.obtenerEJB(ServicioLogger.class);
        if(sl != null){
            sl.registrarLogInfo(mensaje, loggingDB);
        }
    }
    
    /**
     * Este metodo se encarga de registrar un log de nivel DEBUG. Toma el mensaje,
     * a registrar de la excepcion. Si se le indica por medio del parametro <i>loggingDB</i>,
     * registra el mensaje en base de datos. 
     * 
     * @param ex Excepcion a registrar en el log.
     * @param loggingDB Indica si desea o no registrar el log en base de datos.
     */
    public static void registrarLogDebug(Exception ex, boolean loggingDB) {
        ServicioLogger sl = EJBUtils.obtenerEJB(ServicioLogger.class);
        if(sl != null){
            sl.registrarLogDebug(ex, loggingDB);
        }
    }
    
    /**
     * Este metodo se encarga de registrar un log de nivel DEBUG. Toma el mensaje,
     * a registrar de la excepcion. Si se le indica por medio del parametro <i>loggingDB</i>,
     * registra el mensaje en base de datos. 
     * 
     * @param mensaje Mensaje a registrar en el log.
     * @param loggingDB Indica si desea o no registrar el log en base de datos.
     */
    public static void registrarLogDebug(String mensaje, boolean loggingDB) {
        ServicioLogger sl = EJBUtils.obtenerEJB(ServicioLogger.class);
        if(sl != null){
            sl.registrarLogDebug(mensaje, loggingDB);
        }
    }
    
    /**
     * Este metodo se encarga de registrar un log de nivel ERROR. Toma el mensaje,
     * a registrar de la excepcion. Si se le indica por medio del parametro <i>loggingDB</i>,
     * registra el mensaje en base de datos. 
     * 
     * @param ex Excepcion a registrar en el log.
     * @param loggingDB Indica si desea o no registrar el log en base de datos.
     */
    public static void registrarLogError(Exception ex, boolean loggingDB) {
        ServicioLogger sl = EJBUtils.obtenerEJB(ServicioLogger.class);
        if(sl != null){
            sl.registrarLogError(ex, loggingDB);
        }
    }
    
    /**
     * Este metodo se encarga de registrar un log de nivel ERROR. Toma el mensaje,
     * a registrar de la excepcion. Si se le indica por medio del parametro <i>loggingDB</i>,
     * registra el mensaje en base de datos. 
     * 
     * @param mensaje Mensaje a registrar en el log.
     * @param loggingDB Indica si desea o no registrar el log en base de datos.
     */
    public static void registrarLogError(String mensaje, boolean loggingDB) {
        ServicioLogger sl = EJBUtils.obtenerEJB(ServicioLogger.class);
        if(sl != null){
            sl.registrarLogError(mensaje, loggingDB);
        }
    }
    
    /**
     * Este metodo se encarga de registrar un log de nivel FATAL. Toma el mensaje,
     * a registrar de la excepcion. Si se le indica por medio del parametro <i>loggingDB</i>,
     * registra el mensaje en base de datos. 
     * 
     * @param ex Excepcion a registrar en el log.
     * @param loggingDB Indica si desea o no registrar el log en base de datos.
     */
    public static void registrarLogFatal(Exception ex, boolean loggingDB) {
        ServicioLogger sl = EJBUtils.obtenerEJB(ServicioLogger.class);
        if(sl != null){
            sl.registrarLogFatal(ex, loggingDB);
        }
    }
    
    /**
     * Este metodo se encarga de registrar un log de nivel FATAL. Toma el mensaje,
     * a registrar de la excepcion. Si se le indica por medio del parametro <i>loggingDB</i>,
     * registra el mensaje en base de datos. 
     * 
     * @param mensaje Mensaje a registrar en el log.
     * @param loggingDB Indica si desea o no registrar el log en base de datos.
     */
    public static void registrarLogFatal(String mensaje, boolean loggingDB) {
        ServicioLogger sl = EJBUtils.obtenerEJB(ServicioLogger.class);
        if(sl != null){
            sl.registrarLogFatal(mensaje, loggingDB);
        }
    }
}
